PROJET DATA SCIENCE
===
Comp´etition de Tarification Auto
GROUPE 11
NGUYEN Dinh Viet
NGUYEN Anh Quang
LAI Phuong Hoa
Data Science
Contenu
1 TRAITEMENT DE DONNEES 4
1.1 Description des Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Analyses graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Le Graphique Boxplot . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 L’histogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Choix des Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1 Corr´elation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Anova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.3 R´egression au Lasso avec Variable claimBin pour la election des Fonc-
tionnalit´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.4 Les Variables carType, carCategory et carGroup . . . . . . . . . . . . . 11
1.3.5 S´eparation Suppl´ementaire des Donn´ees Train . . . . . . . . . . . . . . 13
2 MODELISATION 14
2.1 Probabilit´e de Sinistre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.1 Analyse Descriptive du Nombre de Sinistre . . . . . . . . . . . . . . . . 14
2.1.2 Mod`ele logistique (Logit) . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.3 Mod`ele Probit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.4 CART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.5 Random Forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.6 XGBoost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.7 Selection du Mod`ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 La valeur attendue de sinistre en sachant qu’elle est positive . . . . . . . . . . 24
2.2.1 The Generalized Linear Model (Gamma) . . . . . . . . . . . . . . . . 24
Groupe 11 1
Data Science
2.2.2 Xgboost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.3 RandomForest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.4 Selection du Mod`ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 TARIFICATION 34
4 R
´
EF
´
ERENCES 35
Groupe 11 2
Data Science
INTRODUCTION
Dans ce projet, notre objectif est de construire un mod`ele de pr´ediction de la prime pure pour
une assurance automobile. Les donn´ees historiques de 60000 polices observ´ees pendant au
moins 3 mois de l’ann´ee derni`ere seront utilis´ees comme donn´ees de train (dataTrain) pour
construire chaque mod`ele. Ensuite, le mod`ele de tarification le plus pr´ecis sera utilis´e pour
proposer la prime ad´equate pour 20000 nouveaux assur´es dans nos donn´ees de test (test ).
Notre prime pure sera structur´ee comme
P
pure
= P [Y > 0]E[Y |Y > 0, X]
o`u Y est la valeur du sinistre (claimValue) pour chaque observation, et X est un vecteur
de variable d´enotant les autres informations de cette observation. Donc, P [Y > 0] est la
probabilit´e de claim, en autres termes, la probabilit´e qu’un observation ait 1 sinistre ou plus
l’ann´ee pr´ec´edente; et E[Y |Y > 0, X] la valeur attendue du sinistre en sachant qu’elle est
positive pour cette observation.
Dans les sections suivantes, nous allons d’abord effectuer une analyse descriptive des donn´ees,
puis nous cr´eerons des mod`eles epar´es pour la probabilit´e de sinistre et la valeur attendue
du sinistre. Ensuite, ces mod`eles seront utilis´es pour pr´edire la prime pure pour chaque
observation.
Groupe 11 3
Data Science
TRAITEMENT DE DONNEES
1.1 Description des Variables
Notre projet utilise les packages suivants:
remotes
xgboost
forecast
caret
tidyverse
data.table
e1071
statmod
tweedie
randomForest
ranger
boot
tree
glmnet
ggplot2
dplyr
patchwork
rpart plotly
Groupe 11 4
Data Science
ggcorrplot
pdp
Metrics
plyr
h2o
Tout d’abord, on importe 2 fichiers de donn´ees ”training” et ”testing” selon le code ci-dessous:
Pour la variable ˆage du conducteur ou conductrice dans la donn´ee ”training”, l’interquartile
de cette variable est 22. Alos, nous supprimons toutes les observations dont l’ˆage est sup´erieur
`a 52 + 22 × 1.5 = 85 ans.
Ensuite, nous cr´eons une nouvelle variable AgeGroup bas´ee sur les quartiles:
Maintenant, il y a 58, 036 observations dans notre ensemble ”training”.
Nous cr´eons une nouvelle variable binaire claimBin, qui vaut 0 si aucune r´eclamation n’´etait
pr´esente pour l’individu (claimV alue = 0) et vaut 1 si des r´eclamations ont ´et´e faites
(claimV alue > 0).
Groupe 11 5
Data Science
En utilisant la fonction ”head” pour lire la donn´ee ”training” apr`es avoir supprim´e et ajout´e
des variables, on obtient les esultats suivants :
Groupe 11 6
Data Science
1.2 Analyses graphiques
1.2.1 Le Graphique Boxplot
D’apr`es le graphique boxplot ci-dessus, on peut voir que, sur toutes les observations, le nombre
de polices dont la valeur et le nombre de sinistres sont ´egaux `a 0 est tr`es ´elev´e.
Sur la base de la fonction ”quantile” pour la variable claimValue et de la fonction ”table”
pour la variable claimNumber, nous obtenons les esultats suivants :
Jusqu’`a 75% des policies ont re¸cu une valeur de eclamation de 0 et il y avait 48, 923 polices
sur un total de 58, 036 polices observ´ees qui n’ont re¸cu aucune eclamation.
Groupe 11 7
Data Science
1.2.2 L’histogramme
L’histogramme ci-dessous montre que la valeur et le nombre de polices qui doivent ˆetre
r´eclam´ees ne sont pas beaucoup par rapport au nombre qui n’a pas `a ˆetre eclam´e.
1.3 Choix des Variables
1.3.1 Corr´elation
Le graphique ci-dessous montre la corr´elation entre les variables quantitatives dans les donn´ees
Groupe 11 8
Data Science
1.3.2 Anova
On utilise Anova pour estimer comment la variable d´ependante quantitative change avec le
degr´e d’une ou plusieurs variables ind´ependantes cat´egorielles. Ici, claimValue et claimBin
sont deux variables que nous consid´erons.
Pour la Variable claimValue:
`
A partir des esultats ci-dessus, nous proedons `a la suppression de la variable carValue qui
est la variable avec une P-value sup´erieure `a 0,05.
Pour la Variable claimBin:
De mˆeme, on supprime ”carValue”.
Bien que AgeGroup montre un manque de significatif ici, la variable age le fait ; nous devons
donc le conserver dans notre mod`ele, car en r´ealit´e, l’ˆage a un impact significatif sur le montant
de la r´eclamation.
Groupe 11 9
Data Science
1.3.3 egression au Lasso avec Variable claimBin pour la S´election des Fonc-
tionnalit´es
Consid´erons les variables de r´eponse (claimBin) et variables pr´edictives selon le code ci-
dessous:
On effectue une validation crois´ee k-fold pour trouver la valeur λ optimale avec α = 1 signifie
r´egression au Lasso.
On obtient λ = 0.000224635
Groupe 11 10
Data Science
Ensuite, on trouve les coefficients du meilleur mod`ele selon le code ci-dessous:
Sur la base des r´esultats re¸cus, nous ne supprimons plus de variables.
1.3.4 Les Variables carType, carCategory et carGroup
En utilisant le test du chi carr´e de Pearson, `a partir des esultats obtenus ci-dessous, nous
pouvons voir qu’il existe une relation significative entre le groupe de voitures et la cat´egorie,
nous supprimons donc l’un d’entre eux pour ´eviter la multicolin´earit´e. Ici, nous avons choisi
de supprimer carCategory.
Groupe 11 11
Data Science
Nous supprimons ´egalement Bonus car il n’est g´en´eralement pas pertinent lorsque notre en-
semble de donn´ees est gonfl´e `a ero. Nous convertissons ´egalement la variable ”occupation”
en ”employ situation” (”Self-employed” et Employed” seront ”Working”, l’autre sera ”Job-
less”). Parce que ”housewife”, ”retired” and ”unemployed” sont susceptibles d’utiliser moins
la voiture que les personnes ayant un emploi. Par cons´equent, ils ont moins d’impact sur le
nombre de r´eclamations et la valeur des r´eclamations. Ainsi, en les regroupant en un seul
groupe, nous pouvons diminuer la complexit´e du mod`ele En conclusion, nous avons choisi les
variables suivantes pour le mod`ele : ”gender”, ”carType”, ”Employ situation”, ”AgeGroup”,
”material”, ”region”, ”cityDensity”
Groupe 11 12
Data Science
1.3.5 eparation Suppl´ementaire des Donn´ees Train
Nous diviserons ensuite les donn´ees Train en deux parties : 80% seront utilis´ees pour l’entraˆınement
des mod`eles et 20% seront utilis´ees pour la validation.
Groupe 11 13
Data Science
MODELISATION
2.1 Probabilit´e de Sinistre
2.1.1 Analyse Descriptive du Nombre de Sinistre
Premi`erement, nous allons faire une simple analyse descriptive de la variable claimBin. Rap-
pelons qu’ici, 0 repr´esente que l’observation n’a pas de sinistre (claimNumber = 0), et 1
repr´esente que l’observation a un sinistre (claimNumber > 0). Nous allons montrer les donn´ees
sous la forme d’un histogramme.
En observant le graphique, nous pouvons voir que le nombre de personnes sans sinistre est
environ 7 fois plus ´elev´e que celui des personnes avec sinistre, avec respectivement 48934 et
9102 observations.
Groupe 11 14
Data Science
Nous pouvons ´egalement calculer la proportion d’´echantillon de sinistres comme ci-dessous.
p =
Nombre d’observations avec sinistre
Nombre d’observations
(1)
Le r´esultat est
Avec cette br`eve introduction `a la variable de r´eponse, nous pouvons commencer `a entrer
dans notre processus de moelisation.
Nous allons utiliser 5 mod`eles pour pr´edire la probabilit´e CART, Random Forest et XGBoost.
Nous utiliserons ensuite le param`etre de pr´ecision des matrices de confusion et l’AUC ROC
individuelle comme ´echelle de s´election des mod`eles. Le processus en´eral consistera `a con-
struire chaque mod`ele `a l’aide des donn´ees de train, puis `a pr´edire la probabilit´e de sinistre
sur les donn´ees de validation.
2.1.2 Mod`ele logistique (Logit)
Le mod`ele logistique (ou mod`ele logit) est un GLM classique permettant de pr´edire la proba-
bilit´e qu’un ´ev´enement se produise en faisant en sorte que sa probabilit´e soit une combinaison
lin´eaire d’autres variables ind´ependantes.
Voici le r´esultat
Groupe 11 15
Data Science
En examinant les coefficients, nous pouvons constater que la plupart de nos variables ind´ependantes
sont significatives (p = 0,05), `a l’exception de certaines des variables region. Ceci est logique
puisque si ces egions ont une population plus faible que les autres, elles seront moins signi-
ficatives dans le mod`ele final.
Ensuite, comme
χ
2
Variance nulle Variance esiduelle (2)
Nous pouvons effectuer le test d’ad´equation du Khi-deux. La p-value qui en esulte est de
0, 000 < 0, 05, ce qui signifie que le mod`ele est tr`es utile pour pr´edire la probabilit´e de sinistre.
Apr`es, le crit`ere d’information d’Akaike ( AIC) est ´egalement un mesure de la qualit´e d’un
mod`ele, calcul´e comme
Groupe 11 16
Data Science
AIC = 2k 2 log( L) (3)
o`u k est le nombre de param`etres `a estimer du mod`ele et L est le maximum de la fonction de
vraisemblance. Le mod`ele avec l’AIC le plus bas offre le meilleur pr´ediction. Pour le mod`ele
logit, AIC = 38173
Finalement, nous construisons la matrice de confusion pour notre mod`ele. Pour chaque
mod`ele, nous utilisons la proportion de l’´echantillon calcul´ee dans la section ci-dessus comme
seuil entre les deux ´ev´enements ”Avoir un sinistre” et ”Pas de sinistre”. En d’autres termes,
si la probabilit´e de sinistre pr´edite par le mod`ele pour une observation est inf´erieure `a la
proportion de l’´echantillon, cette observation est class´ee comme ”Sans sinistre”.
On notons ”Sans sinistre” comme 0 et ”Avoir un sinistre” comme 1 dans la matrice. Dans ce
mod`ele, la pr´ecision est 0,6036.
Groupe 11 17
Data Science
2.1.3 Mod`ele Probit
Similaire au mod`ele Logit, le mod`ele Probit est ´egalement un GLM mais avec une fonction
de lien probit au lieu d’une fonction de lien logit.
Pour ce mod`ele, comme le mod`ele logit, la plupart de variables ind´ependantes sont significa-
tives (p = 0,05).
Groupe 11 18
Data Science
Le p-value du test d’ad´equation du Khi-deux est 0, 000 < 0, 05, donc le mod`ele est utile pour
pr´edire. Nous remarquons ´egalement que AIC = 38208.
Voici la matrice de confusion
La pr´ecision est 0,5947 pour le mod`ele probit.
2.1.4 CART
Classification And Regression Tree (CART) est une variante de l’algorithme de l’arbre de
d´ecision. Il explique comment les valeurs de la variable cible peuvent ˆetre pr´edites en fonction
d’autres ´el´ements. Nous utilisons le package rpart sur R pour cette section. La matrice de
confusion donne une pr´ecision de 0,7343.
Groupe 11 19
Data Science
2.1.5 Random Forest
Le Random Forest, comme son nom l’indique, se compose d’un grand nombre d’arbres de
d´ecisions individuels qui fonctionnent comme un ensemble. Chaque arbre individuel d’un
Random Forest ´emet une pr´ediction de classe et la classe ayant re¸cu le plus de votes devient
la pr´ediction de notre mod`ele. Le resultat en utilisant le package randomForest sur R est
Nous pouvons encore une fois cr´eer une matrice de confusion, qui donne une pr´ecision de
0.8403.
Groupe 11 20
Data Science
2.1.6 XGBoost
XGBoost est un algorithme assez r´ecent qui gagne en popularit´e ces derni`eres ann´ees en
raison de sa pr´ecision en mati`ere de pr´ediction. Cependant, dans le cadre de ce projet, nous
ne etaillerons pas le fonctionnement de cet algorithme, ni le processus de tuning des hyper-
param`etres pour cette section particuli`ere. Cependant, `a titre d’exemple de l’algorithme,
nous allons tout de eme montrer notre esultat en utilisant le package xgBoost, en utilisant
max.depth = 20 et nround = 2000. La matrice de confusion esultante est ci-dessous, avec
une pr´ecision de 0,7238.
Avec tous les mod`eles construits, nous pouvons maintenant passer `a la phase de s´election.
Nous avons gard´e ce processus assez simple, car nous irons plus en profondeur avec la valida-
tion crois´ee k-fold et le tuning des hyper-param`etres pour la prochaine section du projet, les
mod`eles pour la valeur esp´er´ee de la sinistre. Cependant, notez que le r´esultat pourrait po-
tentiellement ˆetre plus pr´ecis si nous appliquons ces ethodes pour les mod`eles de probabilit´e
de sinistre dans cette section.
Groupe 11 21
Data Science
2.1.7 Selection du Mod`ele
Avant notre processus de s´election, nous calculons ´egalement l’AUC ROC (La plaine sous le
courbe ROC), en raison du d´es´equilibre de nos donn´ees (le nombre d’observations sans sinistre
est beaucoup plus ´elev´e que celui des observations avec sinistre). Ensuite, nous pouvons
tabuler la pr´ecision et l’AUC ROC pour chaque mod`ele.
Ce r´esultat est logique puisque, mˆeme si les GLM (Logit et Probit) sont d’excellents mod`eles
en th´eorie, ils ont des difficult´es `a surpasser les trois autres algorithmes complexes. Random
Forest est compos´e de nombreux arbres de ecision, son esultat devrait donc ˆetre meilleur
que celui d’un simple mod`ele CART. Bien que le esultat de XGBoost soit ediocre, il est
compr´ehensible car il s’agit simplement d’une d´emonstration de cet algorithme sans traitement
Groupe 11 22
Data Science
appropri´e pour obtenir un meilleur r´esultat.
Avec cela, nous pouvons voir que eme si Random Forest produit un r´esultat ROC AUC
l´eg`erement inf´erieur, sa pr´ecision est bien meilleure que celle des autres mod`eles. Par cons´equent,
nous allons choisir Random Forest comme mod`ele de pr´ediction pour notre probabilit´e de sin-
istres.
Groupe 11 23
Data Science
2.2 La valeur attendue de sinistre en sachant qu’elle est positive
Avant d’aller construire le mod`ele, nous devons filtrer les donn´ees qui ont le claimValue =
0. Nous diviserons `a nouveau les donn´ees Train en deux parties :80% seront utilis´ees pour
l’entraˆınement des mod`eles et 20% seront utilis´ees pour la validation.
2.2.1 The Generalized Linear Model (Gamma)
Nous allons commencer par comparer le mod`ele Le Mod`ele Lin´eaire en´eralis´e (GLM) pour
la distribution Gamma. Le GLM g´en´eralise la egression lin´eaire en permettant au mod`ele
lin´eaire d’ˆetre reli´e `a la variable eponse via une fonction lien. GLM est simple,commun en
assurance et il est facile `a interpr´eter. Cependent, il a des hypoth`eses strictes autour de la
forme de la distribution et du caract`ere al´eatoire des termes d’erreur et il a un faible pouvoir
pr´edictif. Voici le esultat
Groupe 11 24
Data Science
En examinant les coefficients, on constate que seuls ”Groupe d’ˆage” et ”Mat´eriel” sont signifi-
catifs (p = 0,05). C’est logique puisque le comportement au volant est diff´erent `a chaque ˆage.
Les jeunes ont tendance `a conduire de fa¸con imprudente, ce qui augmente souvent la valeur
du sinistre. Et les voitures avec un mat´eriau de couverture subissent moins de dommages en
cas d’accident. On calcule aussi La racine de l’erreur quadratique moyenne (REQM) ou en
anglais, root-mean-square error ou RMSE pour mesurer la puissance de pr´ediction.
Le RMSE du mod`ele est ´elev´e e qui signifie que la puissance predi du test n’est pas l’efficacit´e
Groupe 11 25
Data Science
2.2.2 Xgboost
XGBoost est une biblioth`eque de renforcement de gradient distribu´ee optimis´ee con¸cue pour
ˆetre tr`es efficace, flexible et portable. Il impl´emente des algorithmes d’apprentissage automa-
tique dans le cadre du Gradient Boosting. XGBoost a besoin que toutes les entr´ees soient des
nombres, nous devrons convertir les donn´ees que nous utilisons en nombre. Nous utiliserons
”one hot encoding” pour convertir.One Hot encoding est le processus de conversion d’une
variable cat´egorielle avec plusieurs cat´egories en plusieurs variables, chacune avec une valeur
de 1 ou 0. Si nous ultilisons Label Code, xgboost interpr´etera `a tort la caract´eristique comme
ayant une relation num´erique. Voici la result de l’One Hot encoding:
Groupe 11 26
Data Science
Ensuite, nous ex´ecutons un simple XGBoost
Nous obtenons la resultats:
Le RMSE est ´elev´e. Nous essayons maintenant de faire une Grid-Search pour essayer de
nombreuses combinaisons diff´erentes d’hyper-param`etres pour voir quelle combinaison nous
donne le meilleur ajustement (best fit)
Groupe 11 27
Data Science
Nous avons constat´e que cette combinaison d’hyper-param`etres nous donnera le meilleur
ajustement (best fit): max depth = 2 eta = 0.1 gamma = 0 min child weight = 3
colsample bytree = 0.4 subsample = 1
Nous recommen¸cons ensuite avec la meilleure combinaison de param`etres
Nous obitons la resultats:
Nous pouvons voir que l’efficacit´e du mod`ele a augment´e de mani`ere significative.
2.2.3 RandomForest
Tout d’abord, nous allons ex´ecuter un mod`ele Random Forest simple. Voici la resultal. Voici
la r´esultat
Groupe 11 28
Data Science
Le RMSE de ce mod`ele est encore ´elev´e, nous allons donc am´eliorer le mod`ele en utilisant
Grid Search.
Groupe 11 29
Data Science
Nous trouvons la meilleure combinaison d’hyperparam`etres: max depth = 10, min rows = 3,
nbin = 20, ntrees = 100, mtries = 3, sample rate = 0.55 Apr`es cela, nous ex´ecutons
`a nouveau le mod`ele avec une combinaison am´elior´ee d’hyperparam`etres. Voici lanouveau
mod`ele et la resultal
Nous pouvons voir que l’efficacit´e du mod`ele a augment´e de mani`ere significative.
Groupe 11 30
Data Science
2.2.4 Selection du Mod`ele
Afin d’´evaluer les performances du mod`ele, nous effectuons Cross-validation avec les emes
folds pour tous les mod`eles et comperons les RMSE de chaque mod`ele. Dans un premier
temps, nous allons comparer GLM et RandomForest
Groupe 11 31
Data Science
Voici le results.
Nous voyons que le mod`ele Random Forest est plus performant que GLM
Ensuite, nous allons faire validation crois´ee pour Xgboost.
´
Etant donn´e que xgboost n´ecessite
une conversion cat´egorique. Nous ferons une validation crois´ee epar´ee. Puisque les donn´ees
sont assez grandes. Le esultat de cette validation crois´ee peut encore ˆetre valide.
Groupe 11 32
Data Science
Nous comparons les r´esultats entre 3 mod`eles.
D’apr`es la figure, nous pouvons voir que les performances de xgboost sont les meilleures des
3 mod`eles au sens du RMSE. Donc, nous utiliserons xgboost pour l’estimation de La valeur
attendue de sinistre en sachant qu’elle est positive.
Groupe 11 33
Data Science
TARIFICATION
Nous appliquons notre mod`ele pour calculer le nombre premier pur. Le mod`ele prendra le
data.test en entr´ee et renverra la valeur principale de chaque individu. Nous utiliserons Ran-
domForest pour estimer la Probabilit´e de Sinistre et xgboost pour estimer Cout de Sinistre.
C’est les r´esultats
Groupe 11 34
Data Science
R
´
EF
´
ERENCES
[1] Zach, Statology (2021). How to Interpret glm output in R.
https://www.statology.org/interpret-glm-output-in-r/
[2] Wikipedia. Courbe ROC.
https://fr.wikipedia.org/wiki/Courbe
R
OC
[3] Chapman Hall Book (2014), The R Series, Computational Actuarial Science with R
[4] Machine Learning Mastery,
https://machinelearningmastery.com/feature-selection-with-real-and-categorical-data/
[5] Esborn Ohlsson and orn Johansson (2010), R code for Chapter 2 of Non-Life Insurance
Pricing with GLM
[6] What is One Hot Encoding? Why And When do you have to use it?
https://medium.com/hackernoon/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-
it-e3c6186d008f
Groupe 11 35